package br.com.controler;

import br.com.modelo.Produto;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import util.JPAUtil;

/**
 *
 * @author Gilberto 27/05/2012
 */
public class ProdutoControler {

    public static List<Produto> retornaProdutos() {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Produto");
        List<Produto> list = q.getResultList();
        em.close();
        return list;
    }

    public static Produto retornaProdutoPorId(Integer id) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Produto f WHERE f.id = ?");
        q.setParameter(1, id);
        Produto retorno;
        try {
            retorno = (Produto) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }

    public static List<Produto> retornaProdutosPesquisa(String str) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Produto p WHERE p.descricao like ? OR p.gtin like ? OR p.codigoInterno like ?");
        q.setParameter(1, "%" + str + "%");
        q.setParameter(2, "%" + str + "%");
        q.setParameter(3, "%" + str + "%");
        List<Produto> list = q.getResultList();
        em.close();
        return list;
    }

    public static Produto retornaProdutoPorCodigoBarras(String text) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Produto f WHERE f.gtin = ?");
        q.setParameter(1, text);
        Produto retorno;
        try {
            retorno = (Produto) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }

    public static Produto retornaProdutoPorCodigoInterno(String text) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Produto f WHERE f.codigoInterno = ?");
        q.setParameter(1, text);
        Produto retorno;
        try {
            retorno = (Produto) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }
}
